package com.bytz.modules.cms.c4c.service;

import com.bytz.modules.cms.c4c.model.*;

import java.util.List;

public interface IC4cFeignService {

    /**
     * 根据redis中保存的上次更新时间，从c4c获取莱宝soldTo、shipTo
     * 上次更新时间为空时查全部
     *
     * @return 从c4c获取到的数据
     */
    List<C4cCustomer> getSoldToAndShipTo();

    /**
     * 根据需方id和销售id查询对应的机会列表
     *
     * @param saleBusinessPartnerId 销售的businessPartnerId
     * @param soldToId              需方c4cId
     * @return 从c4c查询到的机会列表
     */
    List<C4cOpportunity> getOpportunityBySalesAndSoldTo(String saleBusinessPartnerId, String soldToId);

    /**
     * 查找机会对应的c4c报价id sap报价id sap订单id
     *
     * @param opportunityId 机会id
     * @param quotationId   报价单id 如果没有会用机会id查
     * @return 查找到的各种id
     */
    SalesQuoteIds getQuoteReference(String opportunityId, String quotationId);

    /**
     * 根据opportunity的id查询一条
     *
     * @param opportunityId c4c中opportunity的id
     * @return 查询到的opportunity
     */
    C4cOpportunity getOpportunityById(String opportunityId);

    /**
     * 根据redis中保存的上次更新时间，从c4c获取商品和一级分类
     *
     * @return 查询到的商品和一级分类
     */
    C4cProductAndHierarchy getProductAndHierarchy();

    /**
     * 在c4c中创建一条opportunity
     */
    C4cOpportunity createOpportunity(C4cOpportunity opportunity);

    /**
     * 在c4c中创建一条报价单
     */
    C4cSalesQuote createSalesQuote(C4cSalesQuote opportunity);


    /**
     * @return
     */
    List<C4cChineseName> getEndUserChineseName();

    /**
     * 项目订单将机会和报价单关联
     * @param objectId 报价单的objectId
     * @param opportunityId 机会id
     * @return
     */
    C4cQuoteOpportunity relationQuoteOpportunity(String objectId, String opportunityId);

    /**
     * 创建产品行
     * @param objectId 报价单的objectId
     * @return
     */
    C4cOrderItem createProduct(String objectId);

    /**
     *  更新机会成功率为100%
     */
    void updateOpportunityProbability(String opportunityObjectId);
}
